const app = getApp()
//初始化数据库
const db = wx.cloud.database()
const _ = db.command;
Page({
    data: {
        moments: [],
        currentCommentInput: {},
        showPublishModal: false,
        newMomentContent: '',
        selectedFiles: []
    },
    handleCommentInput(e) {
        const momentId = e.currentTarget.dataset.momentId;
        const comment = e.detail.value;
        const currentCommentInput = this.data.currentCommentInput;
        currentCommentInput[momentId] = comment;
        this.setData({
            currentCommentInput
        });
    },
    submitComment(e) {
      const momentId = e.currentTarget.dataset.momentId;
      const comment = this.data.currentCommentInput[momentId];
      console.log('提交的评论内容:', comment);
      console.log('尝试更新的 momentId:', momentId); // 输出 momentId 用于调试
      if (comment) {
          // 检查 app.userInfo
          if (!app.userInfo ||!app.userInfo.nickName) {
              console.error('app.userInfo 数据缺失或格式错误');
              return;
          }
          const commentUser = app.userInfo.nickName;
          const commentContent = comment;
  
          // 调用云函数
          wx.cloud.callFunction({
              name: 'addComment',
              data: {
                  momentId,
                  commentUser,
                  commentContent
              },
              success: res => {
                  if (res.result.stats && res.result.stats.updated === 0) {
                      console.error('评论提交未更新任何文档，可能 momentId 无效。');
                  } else {
                      console.log(`评论提交成功！评论内容：${comment}，更新的文档 ID：${momentId}`);
                      // 刷新评论列表
                      this.getComments(momentId);
                      // 清空当前输入的评论内容
                      const currentCommentInput = this.data.currentCommentInput;
                      delete currentCommentInput[momentId];
                      this.setData({
                          currentCommentInput
                      });
                  }
              },
              fail: err => {
                  console.error('调用云函数失败:', err);
              }
          })
      }
  },   
    getComments(momentId) {
        const db = wx.cloud.database();
        db.collection('moments')
          .doc(momentId)
          .field({
                comments: true
            })
          .get()
          .then(res => {
                const moments = this.data.moments;
                const momentIndex = moments.findIndex(item => item._id === momentId);
                if (momentIndex!== -1) {
                    moments[momentIndex].comments = res.data.comments;
                    this.setData({
                        moments
                    });
                }
            })
          .catch(err => {
                console.error('获取评论失败', err);
            });
    },
    showPublishModal() {
        this.setData({
            showPublishModal: true
        });
    },
    hidePublishModal() {
        this.setData({
            showPublishModal: false,
            selectedFiles: []
        });
    },
    handleContentInput(e) {
        this.setData({
            newMomentContent: e.detail.value
        });
    },
    chooseFiles() {
        wx.chooseMedia({
            count: 9,
            mediaType: ['image'],
            sourceType: ['album', 'camera'],
            success: (res) => {
                const tempFiles = res.tempFiles.map(file => file.tempFilePath);
                this.setData({
                    selectedFiles: tempFiles
                });
                console.log('已选文件:', tempFiles);
            },
            fail: (err) => {
                console.error('选择文件失败', err);
                console.log('err 类型:', typeof err);
                console.log('err 内容:', err);
                console.log('err 中的 lookup:', err.lookup);
            }
        });
    },
    async publishMoment() {
        const content = this.data.newMomentContent;
        if (content) {
            const selectedFiles = this.data.selectedFiles;
            const fileUrls = [];

            // 上传文件
            for (let i = 0; i < selectedFiles.length; i++) {
                const filePath = selectedFiles[i];
                const cloudPath = `moments/${Date.now()}-${i}-${Math.floor(Math.random() * 1000)}.${filePath.match(/\.(\w+)$/)[1]}`;
                try {
                    const uploadRes = await wx.cloud.uploadFile({
                        cloudPath,
                        filePath
                    });
                    fileUrls.push(uploadRes.fileID);
                    console.log('上传成功的文件路径:', uploadRes.fileID);
                } catch (err) {
                    console.error('文件上传失败', err);
                }
            }

            // 保存动态到数据库
            const db = wx.cloud.database();
            db.collection('moments').add({
                data: {
                    userAvatar: app.userInfo.userPhoto,
                    userName: app.userInfo.nickName,
                    content: content,
                    images: fileUrls,
                    time: new Date().toLocaleString(),
                    comments: []
                },
                success: res => {
                    console.log('动态发布成功', res);
                    this.hidePublishModal();
                    this.setData({
                        newMomentContent: '',
                        selectedFiles: []
                    });
                    this.fetchMoments();
                },
                fail: err => {
                    console.error('动态发布失败', err);
                }
            });
        }
    },
    fetchMoments() {
        const db = wx.cloud.database();
        db.collection('moments').get({
            success: res => {
                this.setData({
                    moments: res.data
                });
            },
            fail: err => {
                console.error('获取动态列表失败', err);
            }
        });
    },
    onLoad(options) {
        this.fetchMoments();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
    // 删除评论函数
    deleteComment(e) {
      
      const momentId = e.currentTarget.dataset.momentId;
      const commentIndex = e.currentTarget.dataset.commentIndex;
      const db = wx.cloud.database();

      // 先获取整个动态文档
      db.collection('moments').doc(momentId).get()
        .then(res => {
            const moment = res.data;
            const comments = moment.comments || [];
            console.log('当前用户:', app.userInfo.nickName);
            console.log('目标评论:', comments[commentIndex].commentUser);
            // 检查当前用户是否是评论的作者
            if (comments[commentIndex] && comments[commentIndex].commentUser === app.userInfo.nickName) {
                // 删除评论
                comments.splice(commentIndex, 1);
                
                db.collection('moments').doc(momentId).update({
                    data: { comments: comments },
                    success: () => {
                        wx.showToast({ title: '删除成功', icon: 'success' });
                        this.getComments(momentId);
                    },
                    fail: err => {
                        console.error('评论删除失败', err);
                        wx.showToast({ title: '删除失败', icon: 'none' });
                    }
                });
            } else {
                wx.showToast({ title: '无权删除此评论', icon: 'none' });
            }
        })
        .catch(err => {
            console.error('获取动态失败', err);
            wx.showToast({ title: '操作失败', icon: 'none' });
        });
    
  },
    // 删除帖子函数
    deleteMoment(e) {
      const momentId = e.currentTarget.dataset.momentId;
      const db = wx.cloud.database();
      
      // 先获取动态
      db.collection('moments').doc(momentId).get()
        .then(res => {
            const moment = res.data;
            
            // 检查当前用户是否是动态的作者
            if (moment.userName === app.userInfo.nickName) {
                // 删除动态
                db.collection('moments').doc(momentId).remove({
                    success: () => {
                        wx.showToast({ title: '删除成功', icon: 'success' });
                        this.fetchMoments();
                    },
                    fail: err => {
                        console.error('动态删除失败', err);
                        wx.showToast({ title: '删除失败', icon: 'none' });
                    }
                });
            } else {
                wx.showToast({ title: '无权删除此动态', icon: 'none' });
            }
        })
        .catch(err => {
            console.error('获取动态失败', err);
            wx.showToast({ title: '操作失败', icon: 'none' });
        });
  }
})    